package com.sma.config;

import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletRegistration.Dynamic;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import com.sma.backend.config.BackendConfig;
import com.sma.web.config.WebConfig;

public class MyWebAppInitializer
        extends AbstractAnnotationConfigDispatcherServletInitializer {

    // Spring IoC容器配置
    @Override
    protected Class<?>[] getRootConfigClasses() {
        // 可以返回Spring的Java配置文件数组
        return new Class<?>[] {BackendConfig.class };
    }

    // DispatcherServlet的URI映射关系配置
    @Override
    protected Class<?>[] getServletConfigClasses() {
        // 可以返回Spring的Java配置文件数组
        return new Class<?>[] { WebConfig.class };
    }

    // DispatcherServlet拦截内容
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/mvc/*" };
    }

    /**
     * 配置上传文件限制
     * @param dynamic Servlet动态加载配置
     */
    @Override
    protected void customizeRegistration(Dynamic dynamic) {
        // 文件上传路径
        String filepath = "e:/mvc/uploads";
        // 5MB
        Long singleMax = (long) (5*Math.pow(2, 20));
        // 10MB
        Long totalMax = (long) (10*Math.pow(2, 20));
        // 配置MultipartResolver，限制请求，单个文件5MB，总文件10MB
        dynamic.setMultipartConfig(new MultipartConfigElement(filepath, singleMax, totalMax, 0));
    }

}